package com.cet6.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.cet6.entity.Word;
import com.cet6.dto.DailyWordDTO;
import com.cet6.dto.ReviewWordDTO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

@Mapper
public interface WordMapper extends BaseMapper<Word> {
    
    /**
     * 分页查询单词列表，支持按单词或释义搜索
     * @param page 分页对象
     * @param keyword 搜索关键词
     * @return 分页结果
     */
    IPage<Word> selectWordPage(Page<Word> page, @Param("keyword") String keyword);
    
    /**
     * 获取用户未学过的单词（用于每日推荐）
     * @param userId 用户ID
     * @param limit 限制数量
     * @return 未学过的单词列表
     */
    List<DailyWordDTO> selectUnstudiedWords(@Param("userId") Long userId, @Param("limit") Integer limit);
    
    /**
     * 获取用户需要复习的单词
     * @param userId 用户ID
     * @param reviewDate 复习日期
     * @param limit 限制数量
     * @return 需要复习的单词列表
     */
    List<DailyWordDTO> selectReviewWords(@Param("userId") Long userId, @Param("reviewDate") LocalDate reviewDate, @Param("limit") Integer limit);
    
    /**
     * 获取需要复习的单词（用于复习功能）
     * @param userId 用户ID
     * @param reviewDate 复习日期
     * @param limit 限制数量
     * @return 需要复习的单词列表
     */
    List<ReviewWordDTO> selectReviewWordsForReview(@Param("userId") Long userId, @Param("reviewDate") LocalDate reviewDate, @Param("limit") Integer limit);
}
